package com.qwz.example.middle;

import com.qwz.example.customer.Customer;
import com.qwz.example.visitor.Visitor;

import java.util.ArrayList;
import java.util.Collection;
/**
* @Description: 要操作的客户集合
* @Package com.qwz.example.middle.ObjectStructure
* @author Qiuwuzhi
* @date 2019/12/27 17:21
* @version V1.0
*/
public class ObjectStructure {
    /**
     * 要操作的客户集合
     */
    private Collection<Customer> collection = new ArrayList<Customer>();

    /**
     * 提供给客户端操作的高层接口，具体的功能由客户端传入的访问者决定
     * @param visitor
     */
    public void handleRequest(Visitor visitor){
        //循环对象结构中的元素，接受访问
        for (Customer customer:collection){
            customer.accept(visitor);
        }
    }

    /**
     * 组建对象结构，向对象结构中添加元素
     * @param customer
     */
    public void addElement(Customer customer){
        this.collection.add(customer);
    }
}
